package org.mobile.model.util;

import net.rubyeye.xmemcached.MemcachedClient;

import org.apache.commons.lang.RandomStringUtils;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MsgUtil {

    private static final Logger LOG = LoggerFactory.getLogger(MsgUtil.class);

    // private static ThreadPoolFactory msgThreadPoolFactory =
    // ApplicationContextUtil
    // .getBean("msgThreadPoolFactory", ThreadPoolFactory.class);
    //
    // /**
    // * 通过线程池发送短信
    // *
    // * @param provider
    // * @param callback
    // * 回调
    // * @param list
    // * 短信列表
    // */
    // public static void runByThreadPool(final MsgProvider provider,
    // final MsgCallback callback, final List<MsgRequestList> list) {
    // if (!CollectionUtils.isEmpty(list)) {
    // Runnable excutor = new Runnable() {
    // @Override
    // public void run() {
    // try {
    // List<MsgResult> resList = new ArrayList<MsgResult>();
    // for (MsgRequestList req : list) {
    // try {
    // MsgResult res = provider.sendSMS(req);
    // resList.add(res);
    // callback.callback(res);
    // } catch (Exception e) {
    // LOG.error("", e);
    // }
    // }
    // callback.callback(resList);
    // } catch (Exception e) {
    // LOG.error("", e);
    // }
    // }
    // };
    // msgThreadPoolFactory.getPool().execute(excutor);
    // }
    // }
    //
    // public static void runByThreadPool(final MsgProvider provider,
    // final MsgCallback callback, final MsgRequestList msgRequestList) {
    // Runnable excutor = new Runnable() {
    // @Override
    // public void run() {
    // try {
    // MsgResult res = provider.sendSMS(msgRequestList);
    // callback.callback(res);
    // } catch (Exception e) {
    // LOG.error("", e);
    // }
    // }
    // };
    // msgThreadPoolFactory.getPool().execute(excutor);
    // }

    public static String getCachedNumber(MemcachedClient memcachedClient,
            String tag, String phone, int i) {
        if(StringUtils.isNotBlank(phone) && memcachedClient != null) {
            try {
                String no = memcachedClient.get(Constants.CACHE_TAG + tag
                        + phone, Constants.CODE_CACHED_TIME);
                if(no == null) {
                    no = RandomStringUtils.randomNumeric(i);
                    memcachedClient.set(Constants.CACHE_TAG + tag + phone,
                            Constants.CODE_CACHED_TIME, no);
                }
                return no;
            } catch(Exception e) {
                LOG.warn("", e);
            }
        }
        return RandomStringUtils.randomNumeric(i);
    }

    // public static String getCachedMsg(CacheManager cacheManager, String tag,
    // String phone) {
    // if (StringUtils.isNotBlank(phone) && cacheManager != null) {
    // String no = (String) cacheManager.get(Constants.CACHE_TAG + tag
    // + phone, Constants.CODE_CACHED_TIME);
    // return no;
    // }
    // return null;
    // }

    // public static boolean destroyNumber(CacheManager cacheManager, String
    // tag,
    // String phone) {
    // try {
    // String key = Constants.CACHE_TAG + tag + phone;
    // cacheManager.destroy(key);
    // } catch (Exception e) {
    // LOG.error("", e);
    // return false;
    // }
    // return true;
    // }
    //
    // public static String getResetCachedMsg(CacheManager cacheManager, String
    // tag,
    // String phone,String no) {
    // if (StringUtils.isNotBlank(phone) && cacheManager != null) {
    // if (no != null) {
    // cacheManager.put(Constants.CACHE_TAG + tag + phone, no,
    // Constants.CODE_CACHED_TIME);
    // }
    // // System.out.print(no);
    // return no;
    // }
    // return null;
    // }
}
